package com.common.help.test18;

import java.security.MessageDigest;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

@SuppressWarnings("restriction")
public class Test6 {

	public static void main(String[] args) throws Exception {
		/*String ss = "你好啊 兄dei";
		String encode = encryptBASE64(ss.getBytes());
		System.out.println(encode);
		byte[] n = decryptBASE64(encode);
		System.out.println(new String(n));
		
		System.out.println(encryptBASE64(n));*/
		
		String ss = "1.索引名词 类似 db的库，type 类似db的表， document 类似db的一条记录，field类似db一个字段2.elasticsearch服务版本采用2.3.3 java1.7.05以上版本 安装head插件方便直观数据logstash-2.4.0将数据同步到es服务要把数据库的主键给 es 作为 _id ，就算更新也不会重复的。3.索引动词index：index 属性控制怎样索引字符串。它可以是下面三个值：analyzed首先分析字符串，然后索引它。换句话说，以全文索引这个域。not_analyzed 索引这个域，所以它能够被搜索，但索引的是精确值。不会对它进行分析。no不索引这个域。这个域不会被搜索到。string 域 index 属性默认是 analyzed 。如果我们想映射这个字段为一个精确值，我们需要设置它为 not_analyzed其他简单类型（例如 long ， double ， date 等）也接受 index 参数，但有意义的值只有 no 和 not_analyzed ， 因为它们永远不会被分析。4.对数据的迁移前需要做的考虑（若对目标索引有特殊要求，比如某些字段不进行analyze等，可提前建立好索引及映射机制，再使用脚本进行数据导入工作）配置参考：最理想的分片数量应该依赖于节点的数量。参考公式：所需的最大节点数 = 分片数 *（副本数+1）举例：你计划5个分片和1个副本，那么所需要的最大的节点数为：5*（1+1）=10个节点。https://www.elastic.co/guide/cn/elasticsearch/guide/current/_most_important_queries.html			5.match_all 查询编辑match_all 查询简单的 匹配所有文档match 查询编辑无论你在任何字段上进行的是全文搜索还是精确查询，match 查询是你可用的标准查询。如果你在一个全文字段上使用 match 查询，在执行查询前，它将用正确的分析器去分析查询字符串对于精确值的查询，你可能需要使用 filter 语句来取代 query，因为 filter 将会被缓存。接下来，我们将看到一些关于 filter 的例子term 查询编辑term 查询被用于精确值 匹配，这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串range 查询编辑range 查询找出那些落在指定区间内的数字或者时间：";
		System.out.println(encryptMD5(ss.getBytes()));
	}
	/** 
	 * BASE64解密 
	 *  
	 * @param key 
	 * @return 
	 * @throws Exception 
	 */ 
	public static byte[] decryptBASE64(String key) throws Exception {  
	    return (new BASE64Decoder()).decodeBuffer(key);  
	}
	
	/** 
	 * BASE64加密 
	 *  
	 * @param key 
	 * @return 
	 * @throws Exception 
	 */  
	public static String encryptBASE64(byte[] key) throws Exception {  
	    return (new BASE64Encoder()).encodeBuffer(key);  
	} 
	
	public static byte[] encryptMD5(byte[] data) throws Exception {  
		  
	    MessageDigest md5 = MessageDigest.getInstance("md5");  
	    md5.update(data);  
	  
	    return md5.digest();  
	  
	}
}
